﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Libreria.DAL;

namespace Libreria.RFID.Modelo
{
    [CAD(true, CAD.TiposBD._SQLServer)]
    public class version
    { 
        // Atributo de abstracción
        private MOR accesoADatos;

        private Int32? codigoVersion;
        private String nombre;
        private DateTime fechaDeActualizacion;
        private Int32? codigopf;

        // Constructor de la clase
        public version()
        {
        }

        public version(string cadenaDeConexion)
        {
            this.accesoADatos = MOR.Instance(cadenaDeConexion);
        }

        //Encapsulamiento y mapeo de atributos
        [Tipo(Tipo.TiposSQLServer._int, true, true)]
        public Int32? CodigoVersion
        {
            get { return codigoVersion; }
            set { codigoVersion = value; }
        }

        
        [Tipo(Tipo.TiposSQLServer._varchar)]
        public String Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        [Tipo(Tipo.TiposSQLServer._datetime, "fechaDeActualizacion")]
        public DateTime FechaDeActualizacion
        {
            get { return fechaDeActualizacion; }
            set { fechaDeActualizacion = value; }
        }


        [Tipo(Tipo.TiposSQLServer._int, "codigopf")]
        public Int32? Codigopf
        {
            get { return codigopf; }
            set { codigopf = value; }
        }

        // Métodos de abstracción de datos
        public void crear()
        {
            this.codigoVersion = this.accesoADatos.crearRegistro(this);
        }

        public List<version> consultar()
        {
            List<Object> registros = this.accesoADatos.consultarRegistros(this, false);
            List<version> resultado = new List<version>();
            foreach (Object registro in registros)
            {
                resultado.Add((version)registro);
            }
            return resultado;
        }

        public version consultarPorCodigo(Int32 codigoVersion)
        {
            this.CodigoVersion = codigoVersion;
            List<Object> registros = this.accesoADatos.consultarRegistros(this, true);
            version resultado = null;
            if (registros != null)
            {
                if (registros.Count == 1)
                {
                    resultado = (version)registros[0];
                }
            }
            return resultado;
        }

        public void actualizar()
        {
            this.accesoADatos.actualizarRegistro(this);
        }

        public void eliminar()
        {
            this.accesoADatos.borrarRegistro(this);
        }

    }
}


    